# 第1题
# global：使用global会影响所以pyenv控制的窗口
# local：使用local只影响当前文件夹和子目录
# shell：使用shell只影响当前会话，一旦会话结束就失效
# global不光会影响pyenv控制的窗口，还会影响系统的python版本设置。因此对于一些需要特定python版本的Linux系统来说会出问题。
# 比如说CentOS 6.x和7.x都是 python 2.x，如果使用global改成3.x版本，那么可能会导致部分系统软件崩溃。

# 第2题 方法1
def fib1(n):
    a = 0
    b = 1
    while a < n:
        print(a)
        a, b = b, a+b
fib1(100)
# 方法1注意n=0时的特殊情况。

# 方法2
def fib2(n):
    fiblst = [0, 1]
    while True:
        a = fiblst[-1] + fiblst[-2]
        if a < n:
            fiblst.append(a)
        else:
            return fiblst
print(fib2(100))
# 方法2注意n=0或1时的特殊情况

def fib(n, a, b):
    print(a)
    a, b = b, a + b
    if a > n:
        return
    return fib(n-1, a, b)
fib(100, 0, 1)

# 第3题
import random
import string
def activeation_code(n, sample_space=string.ascii_lowercase):
    actlst = []
    for i in range(n):
        actstr = ''.join(random.sample(sample_space, k=random.randint(5, 10)))
        actlst.append(actstr)
    return actlst
print(activeation_code(200))

# 第3题注意排除可能存在的相同字符串情况。